﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace stefab.Musique
{
    public class Track
    {
        #region Champs
        /// <summary>
        /// Obtient l'identifiant du morceau.
        /// </summary>
        private string _id = "Inconnu";


        /// <summary>
        /// Obtient le titre du morceau.
        /// </summary>
        private string _title = "Inconnu";



        /// <summary>
        /// Obtient l'Album du morceau.
        /// </summary>
        private Album _theAlbum = null;



        /// <summary>
        /// Obtient le lien Deezer vers le morceau.
        /// </summary>
        private string _link = "Inconnu";


        /// <summary>
        /// Obtient la durée du morceau.
        /// </summary>
        private int _duration = 0;



        /// <summary>
        /// Obtient un extrait de 30 secondes du morceau.
        /// </summary>
        private string _preview = "Inconnu";

        /// <summary>
        /// Obtient l'Artiste du morceau.
        /// </summary>
        private Artist theArtist;

        #endregion 

        #region Proprietés

        public string id
        {
            get { return _id; }
            set { _id = value; }
        }

        public string title
        {
            get { return _title; }
            set { _title = value; }
        }

        public Album theAlbum
        {
            get { return _theAlbum; }
            set { _theAlbum = value; }
        }


        public string link
        {
            get { return _link; }
            set { _link = value; }
        }

        public int duration
        {
            get { return _duration; }
            set { _duration = value; }
        }



        #endregion

        #region Constructeurs
        /// <summary>
        /// Initialise une nouvelle instance par défaut de la classe Track.
        /// Les propriétés du morceau ne peuvent pas être modifiées par la suite.
        /// </summary>
        public Track()
        {
        }

        /// <summary>
        /// Initialise une nouvelle instance de la classe Track.
        /// </summary>
        /// <param name="_id">Identifiant du morceau.</param>
        /// <param name="title">Nom du morceau.</param>
        /// <param name="link">Uri vers un détail du morceau.</param>
        /// <param name="duration">Durée du morceau.</param>
        /// <param name="preview">Uri vers un extrait du morceau.</param>
        /// <param name="theArtist">Artiste du morceau.</param>
        /// <param name="theAlbum">Album du morceau.</param>
        public Track(string id, string title, string link, int duration, string preview, Artist theArtist, Album theAlbum)
        {
            this._id = id;
            this._title = title;
            this._link = link;
            this._duration = duration;
            this._preview = preview;
            this.theArtist = theArtist;
            this._theAlbum = theAlbum;
        }


        #endregion

        #region Méthodes redéfinies
        /// <summary>
        /// Obtient le nom de l'artiste.
        /// </summary>
        /// <returns>Nom de l'artiste.</returns>
        public override string ToString()
        {
            return _title;
        }
        #endregion
    }
}
